package com.qzsoft.zhjd.materiel.modules.materieldata.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataCountDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataCountTypeDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataDetailsDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataForCategoryChartDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataForItemChartDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.dto.MaterielDataListDto;
import com.qzsoft.zhjd.materiel.modules.materieldata.entity.MaterielDataEntity;

/**
 * @ClassName MaterielDataService
 * @Description 物料数据业务接口
 * @author linhuawei
 * @since 2021-09-01
 */
public interface MaterielDataService extends IService<MaterielDataEntity> {

    /**
     * @Title pageDto
     * @Description 获取磅单分页列表
     * @param params 查询条件
     * @return 磅单分页列表
     */
    public IPage<MaterielDataListDto> pageDto(Map<String, Object> params);

    /**
     * @Title ListDto
     * @Description 获取磅单列表
     * @param params 查询条件
     * @return 磅单列表
     */
    public List<MaterielDataListDto> ListDto(Map<String, Object> params);

    /**
     * @Title countDto
     * @Description 获取统计信息
     * @param params 查询条件
     * @return 统计信息
     */
    public MaterielDataCountDto countDto(Map<String, Object> params);

    /**
     * @Title countByWeightDataType
     * @Description 根据收发料类型统计
     * @param params 查询条件
     * @return 统计信息
     */
    public MaterielDataCountTypeDto countByWeightDataType(Map<String, Object> params);

    /**
     * @Title getDetailsById
     * @Description 获取磅单详情数据
     * @param id 磅单主键
     * @return 磅单详情数据
     */
    public MaterielDataDetailsDto getDetailsById(String id);

    /**
     * @Title countForItemChart
     * @Description 收/发料汇总图表对象
     * @param params 查询条件
     * @return 收/发料汇总图表对象
     */
    public List<MaterielDataForItemChartDto> countForItemChart(Map<String, Object> params);

    /**
     * @Title countForItemChart
     * @Description 收/发料汇总图表对象
     * @param params 查询条件
     * @return 收/发料汇总图表对象
     */
    public List<MaterielDataForCategoryChartDto> countForCategoryChart(Map<String, Object> params);

    /**
     * @Title getLastDay
     * @Description 获取最新一条数据日期
     * @return 最新一条数据日期
     */
    public String getLastDay(Map<String, Object> params);

    /**
     * @Title getLastMonth
     * @Description 获取最新一条数据月份
     * @return 最新一条数据月份
     */
    public String getLastMonth(Map<String, Object> params);

    /**
     * @Title getLastYear
     * @Description 获取最新一条数据年份
     * @return 最新一条数据年份
     */
    public String getLastYear(Map<String, Object> params);

    /**
     * @Title getYearList
     * @Description 获取有生产数据的年份
     * @return 有生产数据的年份
     */
    public List<String> getYearList(Map<String, Object> params);
}
